Digital media services are growing in importance and gaining acceptance as the underlying technologies for providing these services mature. But, one limitation on implementing such services is the transactional performance or data-access speed of storage devices. As the demand for digital media increases, limits on transactional performance become more evident and impede system performance and growth.
One known technology for improving data-access performance is a cache. A cache is high-speed memory accessible by a disk, controller, or host, whose primary purpose is to reduce the effective time required to read data from or write data to a lower speed storage device. A cache may reside within a storage device, host processor, or controller or may be located external to any of these devices.
Caches improve performance in hard disk based systems by reducing the requirement for mechanical movement in the storage device, thus minimizing or eliminating bottlenecks related to hard disk access speed. Such caches typically utilize random access memory (RAM) to speed up data access by temporarily storing frequently or most-recently used data in the cache. Although RAM access is much faster than hard disk access, cache effectiveness is often hindered by latencies associated with multiple bus traversals and the fixed amount of RAM that may be integrated into the cache. Furthermore, hard disk drive cache sizes are usually limited to 8 MB or less. These caches lack the physical size to store requested resources in the media server context, where a typical resource is in excess of 100 MB.
Caches implemented on other devices, such as a processor or host bus adapter, typically utilize a small amount (512 KB or less) of high speed memory for caching frequently used instructions or data. These caches are typically too small to increase system performance where large amounts of data are being transferred between devices or system buses. Furthermore, system performance is typically still limited, since points of system degradation (“bottlenecks”) may still occur at connections between devices and I/O buses or at connections between the cache and the device accessing the cache.
FIG. 1 illustrates a typical media server arrangement in the prior art. As shown in FIG. 1, media server 100 typically comprises a host processor 120 which is a computing device having a central processing unit adapted to access and process instructions stored in a memory 122. Host processor 120 preferably runs an application adapted to receive digital media requests from clients, administrators, and other applications (e.g., an application running on a second media server in the same server cluster as media server 100), and to respond to such requests by retrieving the requested digital media, converting it to wire format, and transmitting it to a client or other location via a suitable network or other communication link.
Media server 100 further comprises a network interface 130 for receiving digital-media assets asset requests (e.g., for a movie, video clip, etc.) and forwarding the requests to host processor 120 via a connection 146B. Network interface 130 may, for example, be a network interface card (NIC). Connection 146B connects to I/O bus 106B which transmits the request to host processor 120 via connection 148A. Host processor 120 processes received requests and retrieves requested assets from a storage system 102 via host bus 106B and a secondary (storage system) I/O bus 106A, as described below.
Also shown in FIG. 1 is a storage system 102 comprising a plurality of interconnected physical or logical storage devices 104. Each storage device 104 may contain one or more hard disk drives 180.
Further shown in FIG. 1 is a controller 128 preferably adapted to facilitate communication between host I/O bus 106B and storage system I/O bus 106A. Host I/O bus 106B preferably is connected to network interface 130 via bi-directional connection 146, and to host processor 120 via bi-directional connections 148. Similarly, storage system I/O bus 106A preferably is connected to storage devices 104 via bi-directional connections 140.
FIGS. 2A-2D are composite block/flow diagrams illustrating processing of a typical asset request in the prior art. As shown in FIG. 2A, a user request preferably is received at network interface 13Q and forwarded to host processor 120 via connection 146B, I/O bus 106B, and connection 148A. In FIG. 2B, host processor 120 processes the request and sends instructions to retrieve the requested asset through host side I/O bus 106B, controller 128 (e.g., a host bus adapter), and storage system I/O bus 106A to the storage device 104 that contains the asset. In some systems, storage system 102 may reside on the same I/O bus as host processor 120.
In FIG. 2C, storage device 104 retrieves the requested asset and delivers it to host processor 120. Host processor 120 prepares the asset and transmits it to network interface 130 for delivery to the requesting user as shown in FIG. 2D.
FIG. 3 is a block diagram illustrating potential bottlenecks in media server 100. As shown in FIG. 3, bottlenecks may be device related or may occur at connections between devices and I/O buses, at connections between two or more I/O buses (e.g., at controller 128), or as a result of the physical limitations of the I/O bus itself. These bottlenecks decrease speed and efficiency of the overall system by requiring components to operate at less than their optimal individual speeds.
More specifically, asset requests received at network interface 130 may overburden the interface and result in bottleneck 360. Further, the media server may encounter system performance degradation resulting in bottleneck 350 if host processor 120 cannot process requests efficiently. Additionally, if storage device 104 cannot retrieve the requested asset immediately, or if storage device 104 is limited by its physical characteristics, bottleneck 310 may result.
In addition to these device-related bottlenecks, connection-related bottlenecks may also occur. For example, where the connection between storage device 104 and the storage system I/O bus has a lower bandwidth capability than the storage device or the I/O bus, bottleneck 320 may occur. As described below, this results in storage device 104 restricting its data flow to I/O bus 106 due to the bandwidth capability of connection 140 and not utilizing its full capability for transmitting information to storage system I/O bus 106A. Further, where controller 128 cannot route data efficiently from one I/O bus to another, or where controller 128 becomes overburdened due to bus traversal traffic, bottleneck 330 may occur. Additionally, when the I/O bus itself cannot handle the amount of data passed to-it from a device, bottleneck 340 may occur. As will be recognized, bottlenecks may also occur at any inter-connection between devices where data flow exceeds the connection bandwidth, e.g., where data transmissions from I/O bus 106A to storage device 104 exceed the maximum bandwidth capability of the connection interface.
FIG. 4 illustrates potential bottleneck 320 in greater detail. As shown in FIG. 4, storage device 104 may have a bandwidth capability 410 comparable to the bandwidth capability 420 of I/O bus 106. By contrast, connection 140 may be a typical interface connection with a bandwidth capability 430 of less than 50 MBps, such as IDE (ATA), or E-IDE (fast ATA). Thus, while the storage device may be capable of delivering enough data to saturate the I/O bus, interface connection 140 nevertheless restricts the flow of data. As will be recognized, this bottleneck may be alleviated to some degree by using an alternative interface such as an optical interface (fibre channel arbitrated loop (“FC-AL”)), small computer system interface (“SCSI”), or serial ATA (“S-ATA”) connection, but some degree of bottleneck may nevertheless remain.
FIGS. 5A-5B are a block diagram illustrating the number of input and output operations per second (IQPS) a storage device typically performs. The higher the number of IOPS a device can perform, the better the resulting performance of the particular device and, in general, the entire system. While hard disk drives have been increasing in speed and capacity, inherent physical limitations associated with retrieving data from the rotating platters still exist.
One aspect of these physical limitations is measurable as seek times, i.e., the amount of time it takes for the drive to access the beginning of a block of data to be transferred from the disk, given the starting and target locations. Seek times on the highest performing disk drives today average in the 3-5 millisecond (ms) range for randomly located. data. Assuming a seek time of 5 ms (and without taking into consideration the time needed to read from the drive) the drive would theoretically be limited to between 200 IQPS. A faster seek time of 3 ms would result in a maximum IOPS of 333.
In addition to seek time, however, another important aspect that reduces IOPS is transfer time. Most high performance drives can sustain transfers of approximately 25 MB per second. This number is an average since blocks on the inner portion of the platter can be accessed faster than blocks on the outer portion of the platter. For example, if a media server needs to transfer one second of content for a movie encoded at 3.75 Mbps, approximately 3.75 Mb (or 0.469 MB) of data would be transferred. This represents approximately 1/50th of a second or approximately 20 ms. Coupled with the initial seek time (3-5 ms) from above, typical time requirements are thus approximately 23-25 ms. Using this approximation, a typical media server with only one drive can perform between 40-43 IOPS.
A primary method of increasing IOPS performance, often incorporated into high-performance media servers and storage systems, is to utilize a plurality of directly connected hard disk drives. This can improve performance by performing transactions in parallel on different drives. It also can improve performance by decreasing the transfer time. Generally, high-performance hard disk drives are used for increased system performance. A high-performance hard disk drive typically has a maximum mechanical spindle rotation speed of 15,000 revolutions per minute (RPM). In a digital media server or stand-alone storage system, these hard disk drives are either configured as just a bunch of disks (JBOD) or, more typically, as a redundant array of independent disks (RAID). Using one of these configurations increases the virtual size of the storage system, allowing a larger amount of data to flow from the virtual disk. For example, four hard disk drives spinning at 15,000 RPM can be represented as a single virtual disk, which theoretically achieves a maximum rotational speed of 60,000 RPM.
As shown in FIGS. 5A-B, if a single 15,000 RPM hard disk drive may achieve IOPS performance of X, then four identical drives in a virtual set can theoretically achieve IOPS performance of 4×. For example, if the one drive delivers 40-43 TOPS, then the 4 drives can theoretically achieve 160-172 IOPS. As will be recognized, however, there are many real-world factors, such as data placement on the drive platters, file fragmentation, and head placement at the time of the request, that make this theoretical limit virtually impossible to achieve outside the most ideal controlled conditions.
Thus, digital media systems based solely hard disk drives suffer from limitations on transactional throughput which manifest themselves in the form of relatively low IOPS and a reduced ability to deliver high numbers of digital media files to an ever increasing consumer base.